<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2数据_变量_内存</title>
</head>
<body>
1. 什么是数据
    * 存储在内存中代表特定信息的 ‘信息’，本质就是01010
    * 数据的特点：可传递、可运算
    * 一切皆数据
    * 内存中所有操作的目标：数据
        * 算术运算
        * 逻辑运算
        * 赋值运算
        * 运行函数
        注：每种数据类型的运算都是特定的
2. 什么是内存
    * 内存条通电后产生的可存储数据的空间(临时的)
    * 内存的产生和死亡：内存条(电路板)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失
    * 一块内存的2个数据
        * 内部存储的数据 和 地址值数据(用来标识这块内存)
    * 内存分类
        * 栈：全局变量和局部变量
        * 堆：对象
执行过程：把代码载入内存=>编译=>解析执行
3. 什么是变量
    * 和常量相对，变量名和变量值
    * 每个变量都对应的一块小内存，变量名方便查找到对应的内存，变量值内存中保存的数据
4. 内存，数据，变量三者关系
    * 内存用来存储数据的空间
    * 变量是内存的标识
</body>
<script>
var obj = {name: 'jhon'};//obj中是数据的内存地址值
var a = obj;             //a也是内存地址值，指向obj
console.log(obj.name);//读取的是内存的内容
//每一块内存都有地址值，只有用不用的区别。
//什么情况下会去读取内存地址值，当变量被赋值为对象时，其他情况下都是直接读取变量对应的内容

//内存分类
function fn() {
    var obj = {name: 'cwx'};
    //obj存在于栈空间中
    //{name: 'cwx'}存在于堆空间
}
var obj1 = {name:'bangbang',age:18};
var b = obj1;
var c = obj1.age;//只是读取了obj1对象中的内容

console.log(b.name); //bangbang
console.log(c);      //18
//改变b和c的值
b.name = 'yanniu';
c = 22;//这里又在内存中取了一块来存放数据22，这是存在栈中的，图片错误了
console.log(obj1.name);     //yanniu
console.log(obj1.age);       //18

//数据特点
    //可传递
    var a = 4;
    var b = a;
    //可运算
    var c = 5;
    var d = c+3;
</script>
</html>